在Colab跑我們的TensorFlow,其中要pandas範例來練習。Pandas是個重要且流行的套件(library)是個不錯的工具。
(本篇使用first-steps-with-tensorflow)
在Crash course課程中,有說到機器學習有個重要的插件,就是「Pandas」(熊貓們)Pandas
這個套件適合做資料整理與分析,簡單上手,使用標籤和索引可以快速的處理數據,是個好用工具。
而他有兩個特殊的資料結構,叫做DataFrame
與Series
。DataFrame
可以當做資料表,裡面放著要處理的資料,Series
則可以看成資料庫的每一行資料。
(可以操作Quick Introduction to pandas,在Colab中可以進行各種實作)
DataFrame
可以視為一個關係型的資料表,裡面包含了已經命名的列,以及多個資料行,也就是Series
,而這些資料行的列不一定相同。
Series,它是单一列。DataFrame 中包含一个或多个 Series,每个 Series 均有一个名称。
Series
是一個類似陣列的物件,也可以當做資料表內的每一筆資料。由Series
組成DataFrame
。
廢話不多說,來實作看看就知道這些關係囉!
首先要開始的當然是引用Pandas:
import pandas as pd
pd.__version__
這樣就可以使用pandas(以pd為名)。
接著我們先看一下series
怎麼運作:
pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
在Series
內有個陣列,裡面放著三個城市,這樣的結構,就是完整的Series
,夠簡單吧!
我們可以把不同的Series
放在同一個DataFrame
內,像是我們把資料放在dic中,把城市和人口的資料放入,組成一個新的table(Series
)。
city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
population = pd.Series([852469, 1015785, 485199])
pd.DataFrame({ 'City name': city_names, 'Population': population })
所以會形成表單:
# | City name | Population |
---|---|---|
0 | San Francisco | 852469.0 |
1 | San Jose | 1015785.0 |
2 | Sacramento | 485199.0 |
萬一Series
彼此的資料數不同呢?會不會產生問題?
答案是不會,因為系統會自動把缺的欄位加上「NA/NaN」。那我們來試看看,在城市後面增加個「睫毛城」。
city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento', '睫毛城'])
population = pd.Series([852469, 1015785, 485199])
pd.DataFrame({ 'City name': city_names, 'Population': population })
結果會是:
# | City name | Population |
---|---|---|
0 | San Francisco | 852469.0 |
1 | San Jose | 1015785.0 |
2 | Sacramento | 485199.0 |
3 | 睫毛城 | NaN |
你會發現,如果用手輸入會很蠢,因為我們的數據都是幾萬幾十萬筆,用手輸入會打到天荒地老,因此也可以用外部輸入資料的方式:
california_housing_dataframe = pd.read_csv("https://download.mlcc.google.cn/mledu-datasets/california_housing_train.csv", sep=",")
california_housing_dataframe.describe()
資料表呈現節錄如下:
longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value |
---|---|---|---|---|---|---|---|---|
count | 17000.000000 | 17000.000000 | 17000.000000 | 17000.000000 | 17000.000000 | 17000.000000 | 17000.000000 | 17000.000000 |
mean | -119.562108 | 35.625225 | 28.589353 | 2643.664412 | 539.410824 | 1429.573941 | 501.221941 | 3.883578 |
可以看得出來很方便的整理資料!!
而在呈現方面,可以使用california_housing_dataframe.head()
、california_housing_dataframe.hist('housing_median_age')
......,這些都可以讓資料呈現有所變化。其餘詳細資料可以在Colab裡面玩耍與觀察,這邊就不詳細說明!
睫毛之聲:
Pandas真的是好用的工具!善用的話可以很容易的整理與呈現資料